package com.atguigu.day15.string01.exer;

import org.junit.Test;

import java.util.Arrays;

/*
String s = "ABCDBACDACBDDCBAA";
  统计每一个字符出现的次数
        A --> 5
        B --> 4
        ......
1.  1.1获取不重复的字符组成新的字符串 ABCD
    1.2 让不重复字符串的每一个字符与原始字符串挨个比较 相同则数量+1

2. 2.1对字符串排序
      01234 5678 9 10 11 12 13 14 15 16
      AAAAA BBBB C C  C  C  D  D  D  D
   2.2 结束下标-开始下标+1 就是数量



 */
public class StringExer {

    @Test
    public void test02(){
        String s = "ABCDBACDACBDCDCBAAD";
        //1.对字符串排序
        //1.1将字符串转为字符数组
        char[] arr = s.toCharArray();
        //1.2将字符数组排序


        //1.3将字符数组转为字符串









        //1.对字符串排序
        //1.1将字符串转为字符数组
        char[] array = s.toCharArray();
        //1.2将字符数组排序
        Arrays.sort(array);
        //1.3将字符数组转为字符串
        String newStr = new String(array);
        System.out.println("newStr = " + newStr);//AAAAABBBBCCCCCDDDDD

        for(int start = 0;start<newStr.length();){
            //获取开始下标对应的元素
            char e = newStr.charAt(start);
            //获取指定元素的结束下标
            int lastIndex = newStr.lastIndexOf(e);
            //统计数量 结束-开始+1
            System.out.println(e+" -->"+(lastIndex-start+1));
            //重写计算开始下标=上个元素的结束下标+1
            start=lastIndex+1;

        }



/*
        //获取下标为0的字符
        int start = 0;
        char e = newStr.charAt(start);
        //获取该字符最后一次出现的下标
        int lastIndex = newStr.lastIndexOf(e);
        System.out.println(e+"-->"+(lastIndex-start+1));

        //下一个元素的开始下标
        start = lastIndex+1;
        //获取指定下标的值
        e = newStr.charAt(start);
        //获取结束下标
        lastIndex=newStr.lastIndexOf(e);
        System.out.println(e+"-->"+(lastIndex-start+1));

        //下一个元素的开始下标
        start=lastIndex+1;
        //获取指定下标的元素
        e = newStr.charAt(start);
        //获取指定元素最后一次下标
       lastIndex= newStr.lastIndexOf(e);
       System.out.println(e+"-->"+(lastIndex-start+1));*/





    }


    @Test
    public void test01() {
        String s = "ABCDBACDACBDCDCBAAD";
        // 1.1获取不重复的字符组成新的字符串 ABCD
        String newStr = "";
        for (int i = 0; i < s.length(); i++) {
            //获取原始字符串的每一个字符
            char e = s.charAt(i);
            //让新字符串查看 是否包含原始字符串内容 有 不添加 没有 添加
            if (newStr.indexOf(e) == -1) {
                newStr += e;
            }
        }
        System.out.println("newStr = " + newStr);//ABCD


        // 1.2 让不重复字符串的每一个字符与原始字符串挨个比较 相同则数量+1

        for (int i = 0; i < newStr.length(); i++) {
            //获取新字符串的每一个字符
            char newC = newStr.charAt(i);
            //定义变量 记录每一个字符出现的次数
            int count = 0;
            //让新字符串的每一个字符 与原始字符串的每一个字符进行比较
            for (int j = 0; j < s.length(); j++) {
                //原始字符串的每一个字符
                char oldC = s.charAt(j);
                //新的==旧的 则次数+1
                if (newC == oldC) {
                    count++;
                }
            }
            //展示最终的结果
            System.out.println(newC + " --> " + count);
        }

    }
}
